function Person() {
    
}

console.log(Person.prototype)
// 显示原型和隐式原型
//原型：每一个构造函数都有一个portotype属性 指向它的原型对象  通过new构造函数创建的实例都会有一个__proto__ 属性
//     指向构造函数的原型对象 每个原型对象身上都有一个constrct指向构造函数
//原型链：每个实例都有一个————proto———— 指向他的构造函数的原型对象 当我们访问这个实例上的属性和方法 
//       如果他自身没有那么就会沿着————proto————属性查找原型对象上的方法 如果没有就会沿着原型对象上的__proto__直到找到null为止



// 每一个实例对象都有一个__proto__ 就是隐式原型
// 实例对象的隐式原型等于对应的构造函数的显示原型

function Fun() {
  console.log(11);
}
console.log(Fun.prototype,1);

let fun = new Fun()
console.log(fun.__proto__,2);

console.log(Fun.prototype === fun.__proto__,3);

// 函数的prototype属性,在定义函数是自动添加的,默认值是一个空对象
// 对象的__proto__属性,创建对象时自动添加的,默认值是构造函数的prototype
